package br.com.modelo;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import java.util.List;

import br.com.geral.Conexao;
import br.com.vo.RelatorioPorDisciplina;
import br.com.vo.RelatorioPorTurma;;

public class RelatoriosDAO {
	private Conexao con;
	
	/*
	 * Seta um objeto de conexão com a base de dados.
	 * */
	public RelatoriosDAO(){
		con = Conexao.getInstance();
	}
	
	public List getRelatorioPorTurma(){
		String query = "SELECT tu.nome AS turma, COALESCE(nro_alunos.total, 0) AS alunos, '5,60 %' as estatistica" +
				" FROM tb_turmas tu" +
				" LEFT JOIN (SELECT COUNT(8) AS total, cod_turma FROM tb_usuarios us" +
				" 			 WHERE us.cod_perfil = 2) AS nro_alunos ON tu.cod_turma = nro_alunos.cod_turma";
		//Inicializa��o dos objetos que ser�o utilizados no m�todo
		List linhas = new ArrayList();
		RelatorioPorTurma linha = null;
		//Realiza a busca no banco passando como par�metro a query montada previamente
		ResultSet rs = con.getSelect(query);
		try{
			//Percorre o resultado do banco de dados obtido pela query
			while (rs.next()){
				//Cria uma inst�ncia dos objetos necess�rios
				linha = new RelatorioPorTurma();
				linha.setAlunos(rs.getString("alunos"));
				linha.setTurma(rs.getString("turma"));
				linha.setEstatistica(rs.getString("estatistica"));
				//Insere o objeto usu�rio no ArrayList
				linhas.add(linha);
			}
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return linhas;
	}
	
	public List getRelatorioPorDisciplina(){
		String query = " SELECT di.nome AS disciplina, COALESCE(COUNT(di.nome), 0) AS alunos, '70 %' AS estatistica "+
					   " FROM turmas_has_disciplinas re"+
					   "	  INNER JOIN tb_turmas tu ON tu.cod_turma = re.cod_turma"+
					   "	  LEFT JOIN tb_usuarios us ON us.cod_turma = tu.cod_turma"+
					   "  	  INNER JOIN tb_disciplinas di ON di.cod_disciplina = re.cod_disciplina"+
					   " GROUP BY di.nome";
		//Inicializa��o dos objetos que ser�o utilizados no m�todo
		List linhas = new ArrayList();
		RelatorioPorDisciplina linha = null;
		//Realiza a busca no banco passando como par�metro a query montada previamente
		ResultSet rs = con.getSelect(query);
		try{
			//Percorre o resultado do banco de dados obtido pela query
			while (rs.next()){
				//Cria uma inst�ncia dos objetos necess�rios
				linha = new RelatorioPorDisciplina();
				linha.setAlunos(rs.getString("alunos"));
				linha.setDisciplina(rs.getString("disciplina"));
				linha.setEstatistica(rs.getString("estatistica"));
				//Insere o objeto usu�rio no ArrayList
				linhas.add(linha);
			}
		}catch(Exception e){}
		return linhas;
	}
	
}
